using Microsoft.Xna.Framework.Graphics;

namespace RunGun
{
    /// <summary>
    /// Abstract base class to declare the objects and functions for a 3d model in game.
    /// </summary>
    public abstract class GameModelBase
    {
        protected Model Model;
        protected Texture2D Texture;
        public readonly IShaderEffect ShaderEffect;

        /// <summary>
        /// Initializes a new instance of the <see cref="GameModelBase" /> class.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="texture">The texture.</param>
        /// <param name="shaderEffect">The shader effect.</param>
        protected GameModelBase(Model model, Texture2D texture, IShaderEffect shaderEffect)
        {
            Model = model;
            Texture = texture;
            ShaderEffect = shaderEffect;
        }

        /// <summary>
        /// Draws the model.
        /// </summary>
        /// <param name="camera">The game camera.</param>
        public abstract void Draw(CameraBase camera);
    }
}